#ifndef __WIZ_BNF_INFO_HPP__SHANHAOBO_19800429__
#define __WIZ_BNF_INFO_HPP__SHANHAOBO_19800429__

/// Backus-Naur Form
#include "../Base/Type/WizBaseType.hpp"

namespace Wiz
{
    namespace BNF
    {
        namespace Info
        {
            template <class IteratorT = ::Wiz::Char::Type const*>
            struct Type
            {
                IteratorT           m_Stop;
                ::Wiz::Bool::Type   m_Hit;
                ::Wiz::Bool::Type   m_Full;
                ::Wiz::Size::Type   m_Length;

                Type
                (
                    IteratorT const& Stop   = IteratorT(),
                    ::Wiz::Bool::In Hit     = ::Wiz::Bool::False,
                    ::Wiz::Bool::In Full    = ::Wiz::Bool::False,
                    ::Wiz::Size::In Length  = 0
                ) : m_Stop(Stop), m_Hit(Hit), m_Full(Full), m_Length(Length)
                {}

                template <typename InfoT>
                Type(InfoT const& PrsInfo) : m_Stop(PrsInfo.m_Stop), m_Hit(PrsInfo.m_Hit), m_Full(PrsInfo.m_Full), m_Length(PrsInfo.m_Length)
                {}
            }; /// end of struct Type
        } /// end of namespace Info
    } /// end of namespace BNF
} /// end of namespace Wiz

#endif /*__WIZ_BNF_INFO_HPP__SHANHAOBO_19800429__*/
